/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Simulador.Hardware;

import Simulador.Job.Segmento;

/**
 *
 * @author Matheus
 */
public class BlocoMemoria {

    private int tamanho;
    private Segmento seg;
    private int endBase;
    
    
    public BlocoMemoria(int tam, int base, Segmento seg){
        tamanho=tam;
        endBase=base;
        this.seg=seg;
    }
    
    /**
     * Acessa o segmento alocado no bloco (caso não haja, retorna null)
     * @return O segmento
     */
    public Segmento getSegmento(){
        return seg;
    }
    
    /**
     * Acessa o endereço de base do bloco na memória
     * @return O endereço base
     */
    public int getBase(){
        return endBase;
    }
    
    /**
     * Calcula o endereço do fim do bloco na memória
     * @return O endereço da sua ultma posição de memória
     */
    public int getFim(){
        return endBase+tamanho-1;
    }
    
    /**
     * Acessa o tamanho do bloco
     * @return O tamanho do bloco
     */
    public int getTamanho(){
        return tamanho;
        
    }
    
    /**
     * Ajusta o endereço base do bloco na memória
     * @param novaBase A nova base
     */
    public void setBase(int novaBase){
        endBase=novaBase;
    }
    
    /**
     * Ajusta o tamanho do bloco
     * @param tam O novo tamanho
     */
    public void setTamanho(int tam){
        tamanho=tam;
    }
    /**
     * Remove o segmento alocado
     */
    public void limpa(){
        seg=null;
    }
}
